home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume4 / conquer3 / patch4 < prev    next >
Encoding:
Internet Message Format  |  1988-07-30  |  42.9 KB

  1. Path: uunet!convex!killer!ames!mailrus!cornell!uw-beaver!tektronix!tekgen!tekred!games
  2. From: games@tekred.TEK.COM
  3. Newsgroups: comp.sources.games
  4. Subject: v05i053:   conquer3 - middle earth multi-player game (V3), Patch4
  5. Message-ID: <2891@tekred.TEK.COM>
  6. Date: 29 Jul 88 16:08:31 GMT
  7. Sender: billr@tekred.TEK.COM
  8. Lines: 1592
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted by: ihnp4!homxc!smile
  12. Comp.sources.games: Volume 5, Issue 53
  13. Archive-name: conquer3/Patch4
  14.  
  15.     [Unshar and feed to patch, or feed to patch directly if you have
  16.      the latest version.  -br]
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of shell archive."
  25. # Contents:  patches04
  26. # Wrapped by billr@saab on Fri Jul 29 09:06:24 1988
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'patches04' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'patches04'\"
  30. else
  31. echo shar: Extracting \"'patches04'\" \(40959 characters\)
  32. sed "s/^X//" >'patches04' <<'END_OF_FILE'
  33. X*** omakeworld.c    Thu Jul 28 09:09:48 1988
  34. X--- makeworld.c    Thu Jul 28 09:10:58 1988
  35. X***************
  36. X*** 746,752
  37. X                  ntn[NNOMAD].arm[army2num].yloc=y;
  38. X                  ntn[NNOMAD].arm[army2num].stat=ATTACK;
  39. X                  ntn[NNOMAD].arm[army2num].sold=100+100*(rand()%15);
  40. X!                 ntn[NNOMAD].arm[army2num].unittyp=A_CAVALRY;
  41. X                  if(army2num<MAXARM-1) army2num++;
  42. X              }
  43. X          }
  44. X
  45. X--- 746,752 -----
  46. X                  ntn[NNOMAD].arm[army2num].yloc=y;
  47. X                  ntn[NNOMAD].arm[army2num].stat=ATTACK;
  48. X                  ntn[NNOMAD].arm[army2num].sold=100+100*(rand()%15);
  49. X!                 ntn[NNOMAD].arm[army2num].unittyp=A_LT_CAV;
  50. X                  if(army2num<MAXARM-1) army2num++;
  51. X              }
  52. X          }
  53. X*** orandevent.c    Thu Jul 28 09:09:50 1988
  54. X--- randevent.c    Thu Jul 28 09:10:58 1988
  55. X***************
  56. X*** 5,10
  57. X  #include "data.h"
  58. X  #ifdef RANEVENT
  59. X  #ifdef ADMIN
  60. X  
  61. X  extern FILE *fnews;
  62. X  extern short country;
  63. X
  64. X--- 5,14 -----
  65. X  #include "data.h"
  66. X  #ifdef RANEVENT
  67. X  #ifdef ADMIN
  68. X+ char    *names[] = {        /* must end in single character name */
  69. X+     "groo","brok","vul","poin","srop","hoga","nobi","bonz","gail",
  70. X+     "lynn","zorb","theed","urda","X"
  71. X+ };
  72. X  
  73. X  extern FILE *fnews;
  74. X  extern short country;
  75. X***************
  76. X*** 77,82
  77. X      return(newntn);
  78. X  }
  79. X  
  80. X  /* disolve a certain percent of a nation */
  81. X  /*returns value of new nation */
  82. X  int
  83. X
  84. X--- 81,106 -----
  85. X      return(newntn);
  86. X  }
  87. X  
  88. X+ char
  89. X+ getnewmark()
  90. X+ {
  91. X+     char tmpchr;
  92. X+     int  done=TRUE,i;
  93. X+     tmpchr='A'-1;
  94. X+     while (done) {
  95. X+         tmpchr++;
  96. X+         done=FALSE;
  97. X+         for (i=0;i<MAXNTN;i++)
  98. X+             if (ntn[i].mark==tmpchr && ntn[i].active>0)
  99. X+                 done=TRUE;
  100. X+         if (!done && !isupper(tmpchr))
  101. X+             done=TRUE;
  102. X+         if (tmpchr=='Z')
  103. X+             done=FALSE;
  104. X+     }
  105. X+     return(tmpchr);
  106. X+ }
  107. X+ 
  108. X  /* disolve a certain percent of a nation */
  109. X  /*returns value of new nation */
  110. X  int
  111. X***************
  112. X*** 88,95
  113. X      int split;    /* number of sectors split */
  114. X      int defaultx=(-1), defaulty=(-1), realx=(-1), realy=(-1), dist;
  115. X      int i,j,armynum,narmynum,posi,posj;
  116. X-     int notdone=1;
  117. X-     char tmpchr;
  118. X  
  119. X      split =  ntn[target].tsctrs * percent / 100;
  120. X      if (split==0) {
  121. X
  122. X--- 112,117 -----
  123. X      int split;    /* number of sectors split */
  124. X      int defaultx=(-1), defaulty=(-1), realx=(-1), realy=(-1), dist;
  125. X      int i,j,armynum,narmynum,posi,posj;
  126. X  
  127. X      split =  ntn[target].tsctrs * percent / 100;
  128. X      if (split==0) {
  129. X***************
  130. X*** 127,139
  131. X          return(0);
  132. X      }
  133. X  
  134. X!     strcpy(ntn[new].name,"r-");
  135. X!     strncat(ntn[new].name,ntn[target].name,min(NAMELTH-2,strlen(ntn[target].name)));
  136. X!     for (armynum=0;armynum<MAXNAVY;armynum++)
  137. X!         if(strcmp(ntn[armynum].name, ntn[new].name)==0) {
  138. X!             strcpy(eventstr,"no nations available");
  139. X!             return(0);
  140. X!         }
  141. X  #ifdef HIDELOC
  142. X      sprintf(eventstr,"new nation created");
  143. X  #else
  144. X
  145. X--- 149,156 -----
  146. X          return(0);
  147. X      }
  148. X  
  149. X!     if(getnewname(new) == 0) return(0);
  150. X! 
  151. X  #ifdef HIDELOC
  152. X      sprintf(eventstr,"new nation created");
  153. X  #else
  154. X***************
  155. X*** 163,168
  156. X      ntn[new].dplus= ntn[target].dplus;
  157. X      ntn[new].location= ntn[target].location;
  158. X      ntn[new].powers= ntn[target].powers;
  159. X      /* make the rebellion's mark some unused uppercase letter */
  160. X      tmpchr='A'-1;
  161. X      while (notdone) {
  162. X
  163. X--- 180,188 -----
  164. X      ntn[new].dplus= ntn[target].dplus;
  165. X      ntn[new].location= ntn[target].location;
  166. X      ntn[new].powers= ntn[target].powers;
  167. X+     ntn[new].tships= 0;
  168. X+     ntn[new].tsctrs = split;
  169. X+ 
  170. X      /* make the rebellion's mark some unused uppercase letter */
  171. X      ntn[new].mark = getnewmark();
  172. X  
  173. X***************
  174. X*** 164,182
  175. X      ntn[new].location= ntn[target].location;
  176. X      ntn[new].powers= ntn[target].powers;
  177. X      /* make the rebellion's mark some unused uppercase letter */
  178. X!     tmpchr='A'-1;
  179. X!     while (notdone) {
  180. X!         tmpchr++;
  181. X!         notdone=0;
  182. X!         for (i=0;i<MAXNTN;i++)
  183. X!             if (ntn[i].mark==tmpchr && ntn[i].active>0)
  184. X!                 notdone=1;
  185. X!         if (!notdone && !isalpha(tmpchr))
  186. X!             notdone=1;
  187. X!         if (tmpchr=='Z')
  188. X!             notdone=0;
  189. X!     }
  190. X!     ntn[new].mark= tmpchr;
  191. X      for ( dist=2 ; dist < 10; dist++) if (split > 0)
  192. X      for (i=defaultx-dist; i<defaultx+dist; i++)
  193. X          for (j=defaulty-dist; j<defaulty+dist; j++){
  194. X
  195. X--- 184,191 -----
  196. X      ntn[new].tsctrs = split;
  197. X  
  198. X      /* make the rebellion's mark some unused uppercase letter */
  199. X!     ntn[new].mark = getnewmark();
  200. X! 
  201. X      for ( dist=2 ; dist < 10; dist++) if (split > 0)
  202. X      for (i=defaultx-dist; i<defaultx+dist; i++)
  203. X          for (j=defaulty-dist; j<defaulty+dist; j++){
  204. X***************
  205. X*** 246,251
  206. X      return(new);
  207. X  }
  208. X  
  209. X  int
  210. X  randomevent()
  211. X  {
  212. X
  213. X--- 255,280 -----
  214. X      return(new);
  215. X  }
  216. X  
  217. X+ getnewname(new)
  218. X+ int    new;
  219. X+ {
  220. X+     int done,count,i=0;
  221. X+ 
  222. X+     while( strlen(*(names+i)) > 1 ){
  223. X+         done = TRUE;
  224. X+         for (count=0;count<NTOTAL;count++)
  225. X+             if(strcmp(ntn[count].name, *(names+i))==0) 
  226. X+                 done = FALSE;
  227. X+         if(done==TRUE) break;
  228. X+         i++;
  229. X+     }
  230. X+ 
  231. X+     strcpy(ntn[new].name,*(names+i));
  232. X+     if(done ==TRUE) return(1);
  233. X+     strcpy(eventstr,"no nations available");
  234. X+     return(0);
  235. X+ }
  236. X+ 
  237. X  int
  238. X  randomevent()
  239. X  {
  240. X***************
  241. X*** 319,324
  242. X                      if(ASOLD == 0) {
  243. X                          ASOLD = sct[i][j].people/4;
  244. X                          ASTAT = A_MILITIA;
  245. X                          sct[i][j].people -= ASOLD;
  246. X                          break;
  247. X                      }
  248. X
  249. X--- 348,355 -----
  250. X                      if(ASOLD == 0) {
  251. X                          ASOLD = sct[i][j].people/4;
  252. X                          ASTAT = A_MILITIA;
  253. X+                         AXLOC = i;
  254. X+                         AYLOC = j;
  255. X                          sct[i][j].people -= ASOLD;
  256. X                          break;
  257. X                      }
  258. X***************
  259. X*** 388,394
  260. X              break;
  261. X          case 14:
  262. X              /*royal wedding (absorb neighbor nation)*/
  263. X!             /*    takeover ( 100, 0 ); */  done=FALSE;
  264. X              /* something not right.... */
  265. X              break;
  266. X          case 15:
  267. X
  268. X--- 419,425 -----
  269. X              break;
  270. X          case 14:
  271. X              /*royal wedding (absorb neighbor nation)*/
  272. X!             /*    takeover ( 100, 0 ); */  
  273. X              /* something not right.... */
  274. X              done=FALSE;
  275. X              break;
  276. X***************
  277. X*** 390,395
  278. X              /*royal wedding (absorb neighbor nation)*/
  279. X              /*    takeover ( 100, 0 ); */  done=FALSE;
  280. X              /* something not right.... */
  281. X              break;
  282. X          case 15:
  283. X              /*new alloy +10% combat (WARRIOR...)*/
  284. X
  285. X--- 421,427 -----
  286. X              /*royal wedding (absorb neighbor nation)*/
  287. X              /*    takeover ( 100, 0 ); */  
  288. X              /* something not right.... */
  289. X+             done=FALSE;
  290. X              break;
  291. X          case 15:
  292. X              /*new alloy +10% combat (WARRIOR...)*/
  293. X***************
  294. X*** 405,410
  295. X                  ntn[country].powers|=WARLORD;
  296. X                  exenewmgk(WARLORD);
  297. X              }
  298. X              break;
  299. X          case 16:
  300. X              /*royal advisor is spy -- lose power*/
  301. X
  302. X--- 437,445 -----
  303. X                  ntn[country].powers|=WARLORD;
  304. X                  exenewmgk(WARLORD);
  305. X              }
  306. X+             else {    /* have all three powers... oh well */
  307. X+                 done=FALSE;
  308. X+             }
  309. X              break;
  310. X          case 16:
  311. X              /*royal advisor is spy -- lose power*/
  312. X***************
  313. X*** 501,507
  314. X                  ntn[NNOMAD].arm[armynum].sold =400+20*(rand()%50);
  315. X                  else    /* 200-600 */
  316. X                  ntn[NNOMAD].arm[armynum].sold =200+20*(rand()%20);
  317. X!                 ntn[NNOMAD].arm[armynum].unittyp = A_CAVALRY;
  318. X                  ntn[NNOMAD].arm[armynum].stat =ATTACK;
  319. X                  done++;
  320. X              }
  321. X
  322. X--- 536,542 -----
  323. X                  ntn[NNOMAD].arm[armynum].sold =400+20*(rand()%50);
  324. X                  else    /* 200-600 */
  325. X                  ntn[NNOMAD].arm[armynum].sold =200+20*(rand()%20);
  326. X!                 ntn[NNOMAD].arm[armynum].unittyp = A_LT_CAV;
  327. X                  ntn[NNOMAD].arm[armynum].stat =ATTACK;
  328. X                  done++;
  329. X              }
  330. X***************
  331. X*** 543,550
  332. X          case 30: /*new magician + RANDOM POWER*/
  333. X              /*buy new powers and/or new weapons*/
  334. X              if((newpower=getmagic(M_CIV))!=0L){
  335. X!                 printf("\tnation %s gets magic power number %ld\n",ntn[country].name,newpower);
  336. X!                 fprintf(fnews,"1. \tevent in %s->gets magic power number %ld\n", ntn[country].name,newpower);
  337. X                  exenewmgk(newpower);
  338. X              }
  339. X              else done=FALSE;
  340. X
  341. X--- 578,587 -----
  342. X          case 30: /*new magician + RANDOM POWER*/
  343. X              /*buy new powers and/or new weapons*/
  344. X              if((newpower=getmagic(M_CIV))!=0L){
  345. X!                 for(i=S_CIV;i<=E_CIV;i++) if(powers[i]==newpower){
  346. X!                 printf("\tnation %s gets power %s\n",ntn[country].name,pwrname[newpower]);
  347. X!                 fprintf(fnews,"1. \tevent in %s->gets power %s\n", ntn[country].name,pwrname[newpower]);
  348. X!                 }
  349. X                  exenewmgk(newpower);
  350. X              }
  351. X              else done=FALSE;
  352. X***************
  353. X*** 552,559
  354. X          case 31: /*new magic item + RANDOM POWER*/
  355. X              /*buy new powers and/or new weapons*/
  356. X              if((newpower=getmagic(M_MIL))!=0){
  357. X!                 printf("\tnation %s gets magic power number %ld\n",ntn[country].name,newpower);
  358. X!                 fprintf(fnews,"1. \tevent in %s->gets magic power number %ld\n", ntn[country].name,newpower);
  359. X                  exenewmgk(newpower);
  360. X              }
  361. X              else done=FALSE;
  362. X
  363. X--- 589,598 -----
  364. X          case 31: /*new magic item + RANDOM POWER*/
  365. X              /*buy new powers and/or new weapons*/
  366. X              if((newpower=getmagic(M_MIL))!=0){
  367. X!                 for(i=S_MIL;i<=E_MIL;i++) if(powers[i]==newpower){
  368. X!                 printf("\tnation %s gets power %s\n",ntn[country].name,pwrname[newpower]);
  369. X!                 fprintf(fnews,"1. \tevent in %s->gets power %s\n", ntn[country].name,pwrname[newpower]);
  370. X!                 }
  371. X                  exenewmgk(newpower);
  372. X              }
  373. X              else done=FALSE;
  374. X*** oforms.c    Thu Jul 28 09:10:25 1988
  375. X--- forms.c    Thu Jul 28 09:10:58 1988
  376. X***************
  377. X*** 257,262
  378. X      short armynum;
  379. X      char passwd[8];
  380. X      short isgod=FALSE;
  381. X  
  382. X      if(country==0) {
  383. X          isgod=TRUE;
  384. X
  385. X--- 257,266 -----
  386. X      short armynum;
  387. X      char passwd[8];
  388. X      short isgod=FALSE;
  389. X+ #ifdef OGOD
  390. X+     FILE *ftmp;
  391. X+     char filename[80];
  392. X+ #endif OGOD
  393. X  
  394. X      if(country==0) {
  395. X          isgod=TRUE;
  396. X***************
  397. X*** 305,311
  398. X      else    mvaddstr(21,(COLS/2)-17,"( VAMPIRES MAY NOT ADD TO COMBAT BONUS )");
  399. X  
  400. X  #ifdef OGOD
  401. X!      if(isgod==TRUE) mvaddstr(22,(COLS/2)-21,"HIT 4 TO DESTROY NATION OR 5 TO CHANGE TREASURY");
  402. X  #else OGOD
  403. X        if(isgod==TRUE) mvaddstr(22,(COLS/2)-9,"HIT 4 TO DESTROY NATION");
  404. X  #endif OGOD
  405. X
  406. X--- 309,315 -----
  407. X      else    mvaddstr(21,(COLS/2)-17,"( VAMPIRES MAY NOT ADD TO COMBAT BONUS )");
  408. X  
  409. X  #ifdef OGOD
  410. X!      if(isgod==TRUE) mvaddstr(22,(COLS/2)-23,"HIT 4 TO DESTROY NATION OR 5 TO CHANGE COMMODITY");
  411. X  #else OGOD
  412. X        if(isgod==TRUE) mvaddstr(22,(COLS/2)-9,"HIT 4 TO DESTROY NATION");
  413. X  #endif OGOD
  414. X***************
  415. X*** 456,463
  416. X  #ifdef OGOD
  417. X      case '5':
  418. X          if (isgod==TRUE) {
  419. X!             /* adjust treasury */
  420. X!             mvaddstr(0,0,"WHAT IS NEW TOTAL OF TREASURY?");
  421. X              refresh();
  422. X              i = get_number();
  423. X              /* as god it will be saved nothing else needed */
  424. X
  425. X--- 460,475 -----
  426. X  #ifdef OGOD
  427. X      case '5':
  428. X          if (isgod==TRUE) {
  429. X!             /* open the target country's files */
  430. X!             sprintf(filename,"%s%d",exefile,country);
  431. X!             if ((ftmp=fopen(filename,"a"))==NULL) {
  432. X!                 beep();
  433. X!                 errormsg("error opening country's file");
  434. X!                 return;
  435. X!             }
  436. X!             /* adjust commodities */
  437. X!             mvaddstr(0,0,"CHANGE: 1) Gold 2) Jewels 3) Iron 4) Food ?");
  438. X!             clrtoeol();
  439. X              refresh();
  440. X              switch(getch()) {
  441. X              case '1':
  442. X***************
  443. X*** 459,467
  444. X              /* adjust treasury */
  445. X              mvaddstr(0,0,"WHAT IS NEW TOTAL OF TREASURY?");
  446. X              refresh();
  447. X!             i = get_number();
  448. X!             /* as god it will be saved nothing else needed */
  449. X!             ntn[country].tgold = (long) i;
  450. X          }
  451. X          break;
  452. X  #endif OGOD
  453. X
  454. X--- 471,504 -----
  455. X              mvaddstr(0,0,"CHANGE: 1) Gold 2) Jewels 3) Iron 4) Food ?");
  456. X              clrtoeol();
  457. X              refresh();
  458. X!             switch(getch()) {
  459. X!             case '1':
  460. X!                 mvaddstr(1,0,"WHAT IS NEW VALUE FOR TREASURY? ");
  461. X!                 refresh();
  462. X!                 ntn[country].tgold = (long) get_number();
  463. X!                 fprintf(ftmp,"L_NGOLD\t%d \t%d \t%ld \t0 \t0 \t%s\n", XNAGOLD ,country,ntn[country].tgold,"null");
  464. X!                 break;
  465. X!             case '2':
  466. X!                 mvaddstr(1,0,"WHAT IS NEW AMOUNT OF JEWELS? ");
  467. X!                 refresh();
  468. X!                 ntn[country].jewels = (long) get_number();
  469. X!                 fprintf(ftmp,"L_NJWLS\t%d \t%d \t%ld \t0 \t0 \t%s\n", XNARGOLD ,country,ntn[country].jewels,"null");
  470. X!                 break;
  471. X!             case '3':
  472. X!                 mvaddstr(1,0,"WHAT IS NEW AMOUNT OF IRON? ");
  473. X!                 refresh();
  474. X!                 ntn[country].tiron = (long) get_number();
  475. X!                 fprintf(ftmp,"L_NIRON\t%d \t%d \t%ld \t0 \t0 \t%s\n", XNAIRON ,country,ntn[country].tiron,"null");
  476. X!                 break;
  477. X!             case '4':
  478. X!                 mvaddstr(1,0,"WHAT IS NEW AMOUNT OF FOOD? ");
  479. X!                 refresh();
  480. X!                 ntn[country].tfood = (long) get_number();
  481. X!                 break;
  482. X!             default:
  483. X!                 break;
  484. X!             }
  485. X!             fclose(ftmp);
  486. X          }
  487. X          break;
  488. X  #endif OGOD
  489. X*** oreports.c    Thu Jul 28 09:10:26 1988
  490. X--- reports.c    Thu Jul 28 09:11:00 1988
  491. X***************
  492. X*** 281,287
  493. X  void
  494. X  produce()
  495. X  {
  496. X!     short armynum;
  497. X      int military=0;
  498. X      int isgod=FALSE;
  499. X  
  500. X
  501. X--- 281,287 -----
  502. X  void
  503. X  produce()
  504. X  {
  505. X!     short armynum,multiplier=1;
  506. X      int military=0;
  507. X      int isgod=FALSE;
  508. X  
  509. X***************
  510. X*** 308,314
  511. X      mvaddstr(8,0,  "FOOD PRODUCTION");
  512. X      mvprintw(9,0,  "granary now holds.........%8ld tons",ntn[country].tfood);
  513. X      mvprintw(10,0, "%8d people in farms..%8ld tons",spread.infarm,spread.food-ntn[country].tfood);
  514. X!     mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,spread.civilians);
  515. X      mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
  516. X      mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-spread.civilians-military*2);
  517. X      if(spread.food-spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
  518. X
  519. X--- 308,315 -----
  520. X      mvaddstr(8,0,  "FOOD PRODUCTION");
  521. X      mvprintw(9,0,  "granary now holds.........%8ld tons",ntn[country].tfood);
  522. X      mvprintw(10,0, "%8d people in farms..%8ld tons",spread.infarm,spread.food-ntn[country].tfood);
  523. X!     if(magic(country,DEMOCRACY)==1)   multiplier=2;
  524. X!     mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,multiplier*spread.civilians);
  525. X      mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
  526. X      mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-multiplier*spread.civilians-military*2);
  527. X      if(spread.food-multiplier*spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
  528. X***************
  529. X*** 310,318
  530. X      mvprintw(10,0, "%8d people in farms..%8ld tons",spread.infarm,spread.food-ntn[country].tfood);
  531. X      mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,spread.civilians);
  532. X      mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
  533. X!     mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-spread.civilians-military*2);
  534. X!     if(spread.food-spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
  535. X!     mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",spread.food-spread.civilians-military*2);
  536. X      }
  537. X      else{
  538. X      mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
  539. X
  540. X--- 311,319 -----
  541. X      if(magic(country,DEMOCRACY)==1)   multiplier=2;
  542. X      mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,multiplier*spread.civilians);
  543. X      mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
  544. X!     mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-multiplier*spread.civilians-military*2);
  545. X!     if(spread.food-multiplier*spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
  546. X!     mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",spread.food-multiplier*spread.civilians-military*2);
  547. X      }
  548. X      else{
  549. X      mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
  550. X***************
  551. X*** 316,322
  552. X      }
  553. X      else{
  554. X      mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
  555. X!     mvprintw(17,0, "REVENUE FROM EXCESS.......%8ld gold",spread.food-spread.civilians-military*2-FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
  556. X      }
  557. X  
  558. X      mvaddstr(8,41,  "OTHER PRODUCTION");
  559. X
  560. X--- 317,323 -----
  561. X      }
  562. X      else{
  563. X      mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
  564. X!     mvprintw(17,0, "REVENUE FROM EXCESS.......%8ld gold",spread.food-multiplier*spread.civilians-military*2-FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
  565. X      }
  566. X  
  567. X      mvaddstr(8,41,  "OTHER PRODUCTION");
  568. X***************
  569. X*** 346,352
  570. X      short navy;
  571. X      short oldx,oldy,oldnavy;
  572. X      short done=FALSE;
  573. X!     int position;
  574. X      int count;       /*screen number */
  575. X      short nvynum=0;    /*current ship id */
  576. X      short wships,mships;
  577. X
  578. X--- 347,354 -----
  579. X      short navy;
  580. X      short oldx,oldy,oldnavy;
  581. X      short done=FALSE;
  582. X!     int i,j;
  583. X!     int position,crew;
  584. X      int count;       /*screen number */
  585. X      short nvynum=0;    /*current ship id */
  586. X      short wships,mships;
  587. X***************
  588. X*** 472,477
  589. X                  else if((oldx==NXLOC)&&(oldy==NYLOC)) {
  590. X                      NWAR+=ntn[country].nvy[oldnavy].warships;
  591. X                      NMER+=ntn[country].nvy[oldnavy].merchant;
  592. X                      NADJSHP;
  593. X                      if(NMOVE>ntn[country].nvy[oldnavy].smove)
  594. X                          NMOVE=ntn[country].nvy[oldnavy].smove;
  595. X
  596. X--- 474,480 -----
  597. X                  else if((oldx==NXLOC)&&(oldy==NYLOC)) {
  598. X                      NWAR+=ntn[country].nvy[oldnavy].warships;
  599. X                      NMER+=ntn[country].nvy[oldnavy].merchant;
  600. X+                     NCREW += ntn[country].nvy[oldnavy].crew;
  601. X                      NADJSHP;
  602. X                      NADJCRW;
  603. X                      if(NMOVE>ntn[country].nvy[oldnavy].smove)
  604. X***************
  605. X*** 473,478
  606. X                      NWAR+=ntn[country].nvy[oldnavy].warships;
  607. X                      NMER+=ntn[country].nvy[oldnavy].merchant;
  608. X                      NADJSHP;
  609. X                      if(NMOVE>ntn[country].nvy[oldnavy].smove)
  610. X                          NMOVE=ntn[country].nvy[oldnavy].smove;
  611. X                      NADJMOV;
  612. X
  613. X--- 476,482 -----
  614. X                      NMER+=ntn[country].nvy[oldnavy].merchant;
  615. X                      NCREW += ntn[country].nvy[oldnavy].crew;
  616. X                      NADJSHP;
  617. X+                     NADJCRW;
  618. X                      if(NMOVE>ntn[country].nvy[oldnavy].smove)
  619. X                          NMOVE=ntn[country].nvy[oldnavy].smove;
  620. X                      NADJMOV;
  621. X***************
  622. X*** 479,484
  623. X                      nvynum=oldnavy;
  624. X                      NWAR=0;
  625. X                      NMER=0;
  626. X                      NADJSHP;
  627. X                  }
  628. X                  else {
  629. X
  630. X--- 483,489 -----
  631. X                      nvynum=oldnavy;
  632. X                      NWAR=0;
  633. X                      NMER=0;
  634. X+                     NCREW=0;
  635. X                      NADJSHP;
  636. X                      NADJCRW;
  637. X                  }
  638. X***************
  639. X*** 480,485
  640. X                      NWAR=0;
  641. X                      NMER=0;
  642. X                      NADJSHP;
  643. X                  }
  644. X                  else {
  645. X                      mvaddstr(23,0,"Navies not together (hit any key) ");
  646. X
  647. X--- 485,491 -----
  648. X                      NMER=0;
  649. X                      NCREW=0;
  650. X                      NADJSHP;
  651. X+                     NADJCRW;
  652. X                  }
  653. X                  else {
  654. X                      mvaddstr(23,0,"Navies not together (hit any key) ");
  655. X***************
  656. X*** 501,506
  657. X                  if((wships<=NWAR)&&(mships<=NMER)){
  658. X                      NWAR-=wships;
  659. X                      NMER-=mships;
  660. X                      NADJSHP;
  661. X                      oldnavy=nvynum;
  662. X                      oldx=NXLOC;
  663. X
  664. X--- 507,515 -----
  665. X                  if((wships<=NWAR)&&(mships<=NMER)){
  666. X                      NWAR-=wships;
  667. X                      NMER-=mships;
  668. X+                     crew = NCREW * (wships+mships) / (NWAR+NMER);
  669. X+                     NCREW -= crew;
  670. X+                     NADJCRW;
  671. X                      NADJSHP;
  672. X                      oldnavy=nvynum;
  673. X                      oldx=NXLOC;
  674. X***************
  675. X*** 517,522
  676. X                          NWAR+=wships;
  677. X                          NMER+=mships;
  678. X                          NADJSHP;
  679. X                      }
  680. X                      else {
  681. X                          NMOVE=ntn[country].nvy[oldnavy].smove;
  682. X
  683. X--- 526,533 -----
  684. X                          NWAR+=wships;
  685. X                          NMER+=mships;
  686. X                          NADJSHP;
  687. X+                         NCREW+=crew;
  688. X+                         NADJCRW;
  689. X                      }
  690. X                      else {
  691. X                          NMOVE=ntn[country].nvy[oldnavy].smove;
  692. X***************
  693. X*** 524,529
  694. X                          NYLOC=oldy;
  695. X                          NWAR=wships;
  696. X                          NMER=mships;
  697. X                          NADJSHP;
  698. X                          NADJLOC;
  699. X                          NADJMOV;
  700. X
  701. X--- 535,542 -----
  702. X                          NYLOC=oldy;
  703. X                          NWAR=wships;
  704. X                          NMER=mships;
  705. X+                         NCREW=crew;
  706. X+                         NADJCRW;
  707. X                          NADJSHP;
  708. X                          NADJLOC;
  709. X                          NADJMOV;
  710. X***************
  711. X*** 536,541
  712. X                  }
  713. X                  break;
  714. X              case '3':
  715. X                  NWAR=0;
  716. X                  NMER=0;
  717. X                  NADJSHP;
  718. X
  719. X--- 549,561 -----
  720. X                  }
  721. X                  break;
  722. X              case '3':
  723. X+                 /* DISBAND NAVY */
  724. X+                 i=NXLOC;
  725. X+                 j=NYLOC;
  726. X+                 if(sct[i][j].altitude == WATER) {
  727. X+                     errormsg("Ships need to be on land or in harbor");
  728. X+                     break;
  729. X+                 }
  730. X                  NWAR=0;
  731. X                  NMER=0;
  732. X                  sct[i][j].people+=NCREW;
  733. X***************
  734. X*** 538,543
  735. X              case '3':
  736. X                  NWAR=0;
  737. X                  NMER=0;
  738. X                  NADJSHP;
  739. X                  break;
  740. X              case '4':
  741. X
  742. X--- 558,567 -----
  743. X                  }
  744. X                  NWAR=0;
  745. X                  NMER=0;
  746. X+                 sct[i][j].people+=NCREW;
  747. X+                 NCREW=0;
  748. X+                 SADJCIV2;
  749. X+                 NADJCRW;
  750. X                  NADJSHP;
  751. X                  break;
  752. X              case '4':
  753. X*** ocombat.c    Thu Jul 28 09:10:27 1988
  754. X--- combat.c    Thu Jul 28 09:11:01 1988
  755. X***************
  756. X*** 348,354
  757. X      retreatside = 0;
  758. X  
  759. X      if((PDloss > 2* PAloss)
  760. X-     &&(PDloss>=50)
  761. X      &&(odds>150)
  762. X      &&(rand()%4==0))    retreatside=DFND;
  763. X  
  764. X
  765. X--- 348,353 -----
  766. X      retreatside = 0;
  767. X  
  768. X      if((PDloss > 2* PAloss)
  769. X      &&(odds>150)
  770. X      &&(((PDloss>=50)&&(rand()%4==0))
  771. X        ||(rand()%8)))    retreatside=DFND;
  772. X***************
  773. X*** 350,356
  774. X      if((PDloss > 2* PAloss)
  775. X      &&(PDloss>=50)
  776. X      &&(odds>150)
  777. X!     &&(rand()%4==0))    retreatside=DFND;
  778. X  
  779. X      if((PAloss > 2* PDloss)
  780. X      &&(PAloss>=50)
  781. X
  782. X--- 349,356 -----
  783. X  
  784. X      if((PDloss > 2* PAloss)
  785. X      &&(odds>150)
  786. X!     &&(((PDloss>=50)&&(rand()%4==0))
  787. X!       ||(rand()%8)))    retreatside=DFND;
  788. X  
  789. X      if((PAloss > 2* PDloss)
  790. X      &&(odds<150)
  791. X***************
  792. X*** 353,359
  793. X      &&(rand()%4==0))    retreatside=DFND;
  794. X  
  795. X      if((PAloss > 2* PDloss)
  796. X-     &&(PAloss>=50)
  797. X      &&(odds<150)
  798. X      &&(rand()%2==0))    retreatside=ATKR;
  799. X  
  800. X
  801. X--- 353,358 -----
  802. X        ||(rand()%8)))    retreatside=DFND;
  803. X  
  804. X      if((PAloss > 2* PDloss)
  805. X      &&(odds<150)
  806. X      &&(((PAloss>=50)&&(rand()%2==0))
  807. X        ||(rand()%6)))    retreatside=ATKR;
  808. X***************
  809. X*** 355,361
  810. X      if((PAloss > 2* PDloss)
  811. X      &&(PAloss>=50)
  812. X      &&(odds<150)
  813. X!     &&(rand()%2==0))    retreatside=ATKR;
  814. X  
  815. X      if(retreatside!=0) {
  816. X          fdxyretreat();
  817. X
  818. X--- 354,361 -----
  819. X  
  820. X      if((PAloss > 2* PDloss)
  821. X      &&(odds<150)
  822. X!     &&(((PAloss>=50)&&(rand()%2==0))
  823. X!       ||(rand()%6)))    retreatside=ATKR;
  824. X  
  825. X      if(retreatside!=0) {
  826. X          fdxyretreat();
  827. X***************
  828. X*** 697,704
  829. X      /*no bonus currently included in this combat*/
  830. X  
  831. X      /*calculate ability of crew*/
  832. X!     acrew = 100*acrew/aship*SHIPCREW;
  833. X!     dcrew = 100*dcrew/dship*SHIPCREW;
  834. X  
  835. X      /*each warship can do damage 40%; once all warships sunk then all*/
  836. X      /*sunk are captured merchant*/
  837. X
  838. X--- 697,704 -----
  839. X      /*no bonus currently included in this combat*/
  840. X  
  841. X      /*calculate ability of crew*/
  842. X!     acrew = 100*acrew/(aship*SHIPCREW);
  843. X!     dcrew = 100*dcrew/(dship*SHIPCREW);
  844. X  
  845. X      /*each warship can do damage 40%; once all warships sunk then all*/
  846. X      /*sunk are captured merchant*/
  847. X*** omove.c    Thu Jul 28 09:10:07 1988
  848. X--- move.c    Thu Jul 28 09:11:03 1988
  849. X***************
  850. X*** 108,114
  851. X                      armornvy=AORN;
  852. X                      return;
  853. X                  }
  854. X!                 else if(AMOVE==0){
  855. X                      errormsg("SORRY: ARMY HAS NO MOVEMENT POINTS");
  856. X                      armornvy=AORN;
  857. X                      return;
  858. X
  859. X--- 108,114 -----
  860. X                      armornvy=AORN;
  861. X                      return;
  862. X                  }
  863. X!                 else if((AMOVE==0)&&(ATYPE!=A_MARINES)){
  864. X                      errormsg("SORRY: ARMY HAS NO MOVEMENT POINTS");
  865. X                      armornvy=AORN;
  866. X                      return;
  867. X***************
  868. X*** 290,295
  869. X                          valid=FALSE;
  870. X                          xcurs=oldxcurs;
  871. X                          ycurs=oldycurs;
  872. X                      }
  873. X                  } else {
  874. X                      move(3,0);
  875. X
  876. X--- 290,297 -----
  877. X                          valid=FALSE;
  878. X                          xcurs=oldxcurs;
  879. X                          ycurs=oldycurs;
  880. X+                         move(ycurs,xcurs*2);
  881. X+                         refresh();
  882. X                      }
  883. X                  } else {
  884. X                      move(3,0);
  885. X*** oupdate.c    Thu Jul 28 09:10:28 1988
  886. X--- update.c    Thu Jul 28 09:11:05 1988
  887. X***************
  888. X*** 360,365
  889. X  #ifdef CMOVE
  890. X              printf("\tthe computer will move for %s\n",ntn[country].name);
  891. X              fprintf(fnews,"1.\tthe computer will move for %s\n",ntn[country].name);
  892. X              nationrun();
  893. X  #endif
  894. X          }
  895. X
  896. X--- 360,368 -----
  897. X  #ifdef CMOVE
  898. X              printf("\tthe computer will move for %s\n",ntn[country].name);
  899. X              fprintf(fnews,"1.\tthe computer will move for %s\n",ntn[country].name);
  900. X+ #ifdef TRADE
  901. X+             checktrade();
  902. X+ #endif TRADE
  903. X              nationrun();
  904. X  #endif
  905. X          }
  906. X***************
  907. X*** 363,368
  908. X              nationrun();
  909. X  #endif
  910. X          }
  911. X  #ifdef NPC
  912. X          /* run npc nations */
  913. X          if(ntn[country].active>=2) {
  914. X
  915. X--- 366,374 -----
  916. X              nationrun();
  917. X  #endif
  918. X          }
  919. X+ #ifdef TRADE
  920. X+         else checktrade();
  921. X+ #endif TRADE
  922. X  #ifdef NPC
  923. X          /* run npc nations */
  924. X          if(ntn[country].active>=2) {
  925. X***************
  926. X*** 672,677
  927. X          for(nvynum=0;nvynum<MAXNAVY;nvynum++) {
  928. X              /*update sea sectors*/
  929. X              if( NMER + NWAR > 0 ) {
  930. X                  if(sct[NXLOC][NYLOC].altitude==WATER) {
  931. X  #ifdef STORMS
  932. X  /*
  933. X
  934. X--- 678,684 -----
  935. X          for(nvynum=0;nvynum<MAXNAVY;nvynum++) {
  936. X              /*update sea sectors*/
  937. X              if( NMER + NWAR > 0 ) {
  938. X+                 int holdval;
  939. X                  if(sct[NXLOC][NYLOC].altitude==WATER) {
  940. X  #ifdef STORMS
  941. X  /*
  942. X***************
  943. X*** 694,701
  944. X                  }
  945. X  #endif
  946. X                  }
  947. X!                 NMOVE = 3 * ntn[country].maxmove * NCREW;
  948. X!                 NMOVE /= ((NWAR+NMER)*SHIPCREW);
  949. X                  ntn[country].tships += NWAR + NMER;
  950. X                  ntn[country].tgold -= (NWAR + NMER) * SHIPMAINT;
  951. X              } else {
  952. X
  953. X--- 701,709 -----
  954. X                  }
  955. X  #endif
  956. X                  }
  957. X!                 holdval = 3 * ntn[country].maxmove * NCREW;
  958. X!                 holdval /= ((NWAR+NMER)*SHIPCREW);
  959. X!                 NMOVE = (short)holdval;
  960. X                  ntn[country].tships += NWAR + NMER;
  961. X                  ntn[country].tgold -= (NWAR + NMER) * SHIPMAINT;
  962. X              } else {
  963. X***************
  964. X*** 722,727
  965. X          ntn[country].tfood-=ntn[country].tmil*2;
  966. X          /*civilians eat 1*/
  967. X          ntn[country].tfood-=ntn[country].tciv;
  968. X  
  969. X          /*starve people*/
  970. X          if(ntn[country].tfood<0) for(x=0;x<MAPX;x++) for(y=0;y<MAPY;y++) {
  971. X
  972. X--- 730,738 -----
  973. X          ntn[country].tfood-=ntn[country].tmil*2;
  974. X          /*civilians eat 1*/
  975. X          ntn[country].tfood-=ntn[country].tciv;
  976. X+         if(magic(country,DEMOCRACY)==TRUE) {  /* eat 2x as much */
  977. X+             ntn[country].tfood-=ntn[country].tciv;
  978. X+         }
  979. X  
  980. X          /*starve people*/
  981. X          if(ntn[country].tfood<0) for(x=0;x<MAPX;x++) for(y=0;y<MAPY;y++) {
  982. X*** ocommands.c    Thu Jul 28 09:10:29 1988
  983. X--- commands.c    Thu Jul 28 09:11:06 1988
  984. X***************
  985. X*** 205,210
  986. X          if(isgod==TRUE) country=0;
  987. X          return;
  988. X      }
  989. X  
  990. X      if((isgod==FALSE) && (ntn[country].tgold < 0 )) {
  991. X          errormsg("You are broke");
  992. X
  993. X--- 205,214 -----
  994. X          if(isgod==TRUE) country=0;
  995. X          return;
  996. X      }
  997. X+     if((isgod==FALSE)&&(sct[XREAL][YREAL].people<=500)) {
  998. X+         errormsg("You need over 500 people to construct");
  999. X+         return;
  1000. X+     }
  1001. X  
  1002. X      if((isgod==FALSE) && (ntn[country].tgold < 0 )) {
  1003. X          errormsg("You are broke");
  1004. X***************
  1005. X*** 271,277
  1006. X              clrtoeol();
  1007. X              refresh();
  1008. X              mnumber = get_number();
  1009. X!             cost = (long) mnumber*WARSHPCOST*NWAR + (long) mnumber*MERSHPCOST*NMER;
  1010. X              if( ntn[country].tgold < cost ) {
  1011. X                  errormsg("NOT ENOUGH GOLD");
  1012. X                  if(isgod==TRUE) country=0;
  1013. X
  1014. X--- 275,282 -----
  1015. X              clrtoeol();
  1016. X              refresh();
  1017. X              mnumber = get_number();
  1018. X!             cost = (long) WARSHPCOST*NWAR + (long) MERSHPCOST*NMER;
  1019. X!             cost *= mnumber / SHIPCREW;
  1020. X              if( ntn[country].tgold < cost ) {
  1021. X                  errormsg("NOT ENOUGH GOLD");
  1022. X                  if(isgod==TRUE) country=0;
  1023. X***************
  1024. X*** 308,313
  1025. X                      x=nvynum;
  1026. X                      NWAR=0;
  1027. X                      NMER=0;
  1028. X                      NADJSHP;
  1029. X                  }
  1030. X                  nvynum++;
  1031. X
  1032. X--- 313,319 -----
  1033. X                      x=nvynum;
  1034. X                      NWAR=0;
  1035. X                      NMER=0;
  1036. X+                     NCREW=0;
  1037. X                      NADJSHP;
  1038. X                  }
  1039. X                  nvynum++;
  1040. X***************
  1041. X*** 321,327
  1042. X          }
  1043. X          else    mvprintw(LINES-2,30,"raising new fleet %d",nvynum);
  1044. X  
  1045. X! 
  1046. X          mvprintw(LINES-3,0,"how many merchants:");
  1047. X          refresh();
  1048. X          mnumber = get_number();
  1049. X
  1050. X--- 327,334 -----
  1051. X          }
  1052. X          else    mvprintw(LINES-2,30,"raising new fleet %d",nvynum);
  1053. X  
  1054. X!         move(LINES-3,0);
  1055. X!         clrtoeol();
  1056. X          mvprintw(LINES-3,0,"how many merchants:");
  1057. X          refresh();
  1058. X          mnumber = get_number();
  1059. X***************
  1060. X*** 355,362
  1061. X          if((nvynum>=0)&&(nvynum<MAXNAVY)) {
  1062. X              clear_bottom(0);
  1063. X              NCREW += (wnumber+mnumber) * SHIPCREW;
  1064. X-             mvprintw(LINES-4,0,"constructing %hd warships and %hd merchants (crew now %d)",wnumber,mnumber,NCREW);
  1065. X- 
  1066. X              sct[XREAL][YREAL].people -= (wnumber+mnumber)*SHIPCREW;
  1067. X  
  1068. X              ntn[country].tgold -= cost;
  1069. X
  1070. X--- 362,367 -----
  1071. X          if((nvynum>=0)&&(nvynum<MAXNAVY)) {
  1072. X              clear_bottom(0);
  1073. X              NCREW += (wnumber+mnumber) * SHIPCREW;
  1074. X              sct[XREAL][YREAL].people -= (wnumber+mnumber)*SHIPCREW;
  1075. X  
  1076. X              ntn[country].tgold -= cost;
  1077. X***************
  1078. X*** 366,371
  1079. X              NWAR+=wnumber;
  1080. X              NMER+=mnumber;
  1081. X              NMOVE=0;
  1082. X              SADJCIV;
  1083. X              NADJCRW;
  1084. X              NADJSHP;
  1085. X
  1086. X--- 371,378 -----
  1087. X              NWAR+=wnumber;
  1088. X              NMER+=mnumber;
  1089. X              NMOVE=0;
  1090. X+             mvprintw(LINES-4,0,"fleet %d: warships=%hd (total %hd) merchants=%hd (total %hd) (crew=%d)",nvynum,wnumber,NWAR,mnumber,NMER,NCREW);
  1091. X+ 
  1092. X              SADJCIV;
  1093. X              NADJCRW;
  1094. X              NADJSHP;
  1095. X***************
  1096. X*** 381,387
  1097. X      }
  1098. X      /* construct fortification points*/
  1099. X      else if(type=='f'){
  1100. X-         if(sct[XREAL][YREAL].people>=500)
  1101. X          /* can only go into debt as much as the nation has jewels */
  1102. X          if ((ntn[country].tgold - cost) > ((-1)*10*ntn[country].jewels)) {
  1103. X              mvprintw(LINES-3,25,"you build +%d%% fort points for %ld gold",armbonus,cost);
  1104. X
  1105. X--- 388,393 -----
  1106. X      }
  1107. X      /* construct fortification points*/
  1108. X      else if(type=='f'){
  1109. X          /* can only go into debt as much as the nation has jewels */
  1110. X          if ((ntn[country].tgold - cost) > ((-1)*10*ntn[country].jewels)) {
  1111. X              mvprintw(LINES-3,25,"you build +%d%% fort points for %ld gold",armbonus,cost);
  1112. X***************
  1113. X*** 389,396
  1114. X              sct[XREAL][YREAL].fortress++;
  1115. X              INCFORT;
  1116. X              errormsg("");
  1117. X!         }
  1118. X!         else errormsg("need 500 people or you are broke");
  1119. X      }
  1120. X      else errormsg("invalid input error");
  1121. X  
  1122. X
  1123. X--- 395,401 -----
  1124. X              sct[XREAL][YREAL].fortress++;
  1125. X              INCFORT;
  1126. X              errormsg("");
  1127. X!         } else errormsg("you are broke");
  1128. X      }
  1129. X      else errormsg("invalid input error");
  1130. X  
  1131. X*** oio.c    Thu Jul 28 09:10:30 1988
  1132. X--- io.c    Thu Jul 28 09:11:06 1988
  1133. X***************
  1134. X*** 203,209
  1135. X      int i;
  1136. X      int nationid;     /*current nation id */
  1137. X  
  1138. X!     printf("id    race    class    score    gold    military people    sectors    name\n");
  1139. X      for (nationid=1; nationid<MAXNTN; nationid++) {
  1140. X  
  1141. X          if(ntn[nationid].active==0) continue;
  1142. X
  1143. X--- 203,209 -----
  1144. X      int i;
  1145. X      int nationid;     /*current nation id */
  1146. X  
  1147. X!     printf("id      name   race    class  score      gold  military  civilians sectors\n");
  1148. X      for (nationid=1; nationid<MAXNTN; nationid++) {
  1149. X          if(ntn[nationid].active==0) continue;
  1150. X          printf("%2d ",nationid);
  1151. X***************
  1152. X*** 205,211
  1153. X  
  1154. X      printf("id    race    class    score    gold    military people    sectors    name\n");
  1155. X      for (nationid=1; nationid<MAXNTN; nationid++) {
  1156. X- 
  1157. X          if(ntn[nationid].active==0) continue;
  1158. X          printf("%d",nationid);
  1159. X          for(i=1;i<8;i++)
  1160. X
  1161. X--- 205,210 -----
  1162. X  
  1163. X      printf("id      name   race    class  score      gold  military  civilians sectors\n");
  1164. X      for (nationid=1; nationid<MAXNTN; nationid++) {
  1165. X          if(ntn[nationid].active==0) continue;
  1166. X          printf("%2d ",nationid);
  1167. X          printf("%9s ",ntn[nationid].name);
  1168. X***************
  1169. X*** 207,213
  1170. X      for (nationid=1; nationid<MAXNTN; nationid++) {
  1171. X  
  1172. X          if(ntn[nationid].active==0) continue;
  1173. X!         printf("%d",nationid);
  1174. X          for(i=1;i<8;i++)
  1175. X              if(ntn[nationid].race==*(races+i)[0])
  1176. X                  printf("    %s",*(races+i));
  1177. X
  1178. X--- 206,213 -----
  1179. X      printf("id      name   race    class  score      gold  military  civilians sectors\n");
  1180. X      for (nationid=1; nationid<MAXNTN; nationid++) {
  1181. X          if(ntn[nationid].active==0) continue;
  1182. X!         printf("%2d ",nationid);
  1183. X!         printf("%9s ",ntn[nationid].name);
  1184. X          for(i=1;i<8;i++)
  1185. X              if(ntn[nationid].race==*(races+i)[0])
  1186. X                  printf("%6s ",*(races+i));
  1187. X***************
  1188. X*** 210,219
  1189. X          printf("%d",nationid);
  1190. X          for(i=1;i<8;i++)
  1191. X              if(ntn[nationid].race==*(races+i)[0])
  1192. X!                 printf("    %s",*(races+i));
  1193. X!         if(ntn[nationid].active>=2) printf("    NPC");
  1194. X!         else printf("    %s",*(Class+ntn[nationid].class));
  1195. X!         printf("    %ld    %ld    %ld    %ld    %d",
  1196. X              ntn[nationid].score ,ntn[nationid].tgold
  1197. X              ,ntn[nationid].tmil ,ntn[nationid].tciv
  1198. X              ,ntn[nationid].tsctrs );
  1199. X
  1200. X--- 210,219 -----
  1201. X          printf("%9s ",ntn[nationid].name);
  1202. X          for(i=1;i<8;i++)
  1203. X              if(ntn[nationid].race==*(races+i)[0])
  1204. X!                 printf("%6s ",*(races+i));
  1205. X!         if(ntn[nationid].active>=2) printf("     NPC ");
  1206. X!         else printf("%8s ",*(Class+ntn[nationid].class));
  1207. X!           printf("%6ld  %8ld  %8ld   %8ld   %5d\n",
  1208. X              ntn[nationid].score ,ntn[nationid].tgold
  1209. X              ,ntn[nationid].tmil ,ntn[nationid].tciv
  1210. X              ,ntn[nationid].tsctrs );
  1211. X***************
  1212. X*** 217,223
  1213. X              ntn[nationid].score ,ntn[nationid].tgold
  1214. X              ,ntn[nationid].tmil ,ntn[nationid].tciv
  1215. X              ,ntn[nationid].tsctrs );
  1216. X-         printf("    %s\n",ntn[nationid].name);
  1217. X      }
  1218. X  }
  1219. X  #endif CONQUER
  1220. X
  1221. X--- 217,222 -----
  1222. X              ntn[nationid].score ,ntn[nationid].tgold
  1223. X              ,ntn[nationid].tmil ,ntn[nationid].tciv
  1224. X              ,ntn[nationid].tsctrs );
  1225. X      }
  1226. X  }
  1227. X  #endif CONQUER
  1228. X*** omagic.c    Thu Jul 28 09:10:31 1988
  1229. X--- magic.c    Thu Jul 28 09:11:09 1988
  1230. X***************
  1231. X*** 206,211
  1232. X              price = getmgkcost(M_CIV,country);
  1233. X          if(price > getmgkcost(M_MGK,country))
  1234. X              price = getmgkcost(M_MGK,country);
  1235. X  
  1236. X          standend();
  1237. X          count=3;
  1238. X
  1239. X--- 206,214 -----
  1240. X              price = getmgkcost(M_CIV,country);
  1241. X          if(price > getmgkcost(M_MGK,country))
  1242. X              price = getmgkcost(M_MGK,country);
  1243. X+ #ifdef OGOD
  1244. X+         if (isgod==TRUE) price=0;
  1245. X+ #endif OGOD
  1246. X  
  1247. X          standend();
  1248. X          count=3;
  1249. X***************
  1250. X*** 433,438
  1251. X          return(0L);
  1252. X      }
  1253. X      if(newpower==DEMOCRACY){
  1254. X          ntn[country].repro+=1;
  1255. X          ntn[country].dplus+=10;
  1256. X          ntn[country].aplus+=10;
  1257. X
  1258. X--- 436,442 -----
  1259. X          return(0L);
  1260. X      }
  1261. X      if(newpower==DEMOCRACY){
  1262. X+         ntn[country].maxmove+=1;
  1263. X          ntn[country].repro+=1;
  1264. X          ntn[country].dplus+=10;
  1265. X          ntn[country].aplus+=10;
  1266. X***************
  1267. X*** 545,550
  1268. X              newtype=DRAGON;
  1269. X              break;
  1270. X          default:
  1271. X              break;
  1272. X          }
  1273. X  
  1274. X
  1275. X--- 549,555 -----
  1276. X              newtype=DRAGON;
  1277. X              break;
  1278. X          default:
  1279. X+             newtype=MAXMONSTER+1;
  1280. X              break;
  1281. X          }
  1282. X  
  1283. X***************
  1284. X*** 555,560
  1285. X              sleep(2);
  1286. X              return(done);
  1287. X          }
  1288. X  
  1289. X          e_cost= (long) *(u_encost+(newtype%200)) * *(unitminsth+(newtype%200));
  1290. X          s_cost= *(u_encost+(newtype%200));
  1291. X
  1292. X--- 560,569 -----
  1293. X              sleep(2);
  1294. X              return(done);
  1295. X          }
  1296. X+         if (newtype==MAXMONSTER+1) {
  1297. X+             /* quick exit */
  1298. X+             return(done);
  1299. X+         }
  1300. X  
  1301. X          e_cost= (long) *(u_encost+(newtype%200)) * *(unitminsth+(newtype%200));
  1302. X          s_cost= *(u_encost+(newtype%200));
  1303. X***************
  1304. X*** 784,789
  1305. X          return(0L);
  1306. X      }
  1307. X      if(oldpower==DEMOCRACY){
  1308. X          ntn[country].repro-=1;
  1309. X          ntn[country].dplus-=10;
  1310. X          ntn[country].aplus-=10;
  1311. X
  1312. X--- 793,799 -----
  1313. X          return(0L);
  1314. X      }
  1315. X      if(oldpower==DEMOCRACY){
  1316. X+         ntn[country].maxmove-=1;
  1317. X          ntn[country].repro-=1;
  1318. X          ntn[country].dplus-=10;
  1319. X          ntn[country].aplus-=10;
  1320. X*** onewlogin.c    Thu Jul 28 09:10:32 1988
  1321. X--- newlogin.c    Thu Jul 28 09:11:09 1988
  1322. X***************
  1323. X*** 225,231
  1324. X  
  1325. X          ntn[country].mark= (*ntn[country].name);
  1326. X          if (islower(ntn[country].mark)!=FALSE)
  1327. X!           ntn[country].mark= toupper(ntn[country].mark);
  1328. X          printf("\ntesting first letter of name (%c) for nation mark...",ntn[country].mark);
  1329. X          valid=TRUE;
  1330. X          while(valid==TRUE) {
  1331. X
  1332. X--- 225,231 -----
  1333. X  
  1334. X          ntn[country].mark= (*ntn[country].name);
  1335. X          if (islower(ntn[country].mark)!=FALSE)
  1336. X!             ntn[country].mark= toupper(ntn[country].mark);
  1337. X          printf("\ntesting first letter of name (%c) for nation mark...",ntn[country].mark);
  1338. X          valid=TRUE;
  1339. X          while(valid==TRUE) {
  1340. X*** odisplay.c    Thu Jul 28 09:09:40 1988
  1341. X--- display.c    Thu Jul 28 09:11:10 1988
  1342. X***************
  1343. X*** 47,53
  1344. X      /*can you see all?*/
  1345. X      if((magic(country,KNOWALL)==1)||(country==0)) {
  1346. X          for(x=0;x<SCREEN_X_SIZE;x++) {
  1347. X!             for(y=0;y<(LINES-4);y++) {
  1348. X                  highlight(x,y);
  1349. X                  see(x,y);
  1350. X              }
  1351. X
  1352. X--- 47,53 -----
  1353. X      /*can you see all?*/
  1354. X      if((magic(country,KNOWALL)==1)||(country==0)) {
  1355. X          for(x=0;x<SCREEN_X_SIZE;x++) {
  1356. X!             for(y=0;y<SCREEN_Y_SIZE;y++) {
  1357. X                  highlight(x,y);
  1358. X                  see(x,y);
  1359. X              }
  1360. X***************
  1361. X*** 62,68
  1362. X      }
  1363. X      /*see as appropriate?*/
  1364. X      else {
  1365. X!         for(x=0;x<SCREEN_X_SIZE;x++) for(y=0;y<(LINES-4);y++) {
  1366. X              if(sct[x+xoffset][y+yoffset].owner==country){
  1367. X                  for(i=x-LANDSEE;i<=x+LANDSEE;i++){
  1368. X                      for(j=y-LANDSEE;j<=y+LANDSEE;j++) {
  1369. X
  1370. X--- 62,69 -----
  1371. X      }
  1372. X      /*see as appropriate?*/
  1373. X      else {
  1374. X!         for(x=(-LANDSEE);(x<SCREEN_X_SIZE+LANDSEE)&&(x+xoffset<MAPX);x++)
  1375. X!         for(y=(-LANDSEE);(y<SCREEN_Y_SIZE+LANDSEE)&&(y+yoffset<MAPY);y++) {
  1376. X              if(sct[x+xoffset][y+yoffset].owner==country){
  1377. X                  for(i=x-LANDSEE;i<=x+LANDSEE;i++){
  1378. X                      for(j=y-LANDSEE;j<=y+LANDSEE;j++) {
  1379. X***************
  1380. X*** 181,187
  1381. X  see(x,y)
  1382. X  {
  1383. X      int armbonus;
  1384. X!     if((x<0)||(y<0)||(x>COLS-21)||(y>=LINES-4)) return;
  1385. X      if(((y+yoffset)<MAPY)&&((x+xoffset)<MAPX)) {
  1386. X  
  1387. X          if((magic(sct[x+xoffset][y+yoffset].owner,THE_VOID)==TRUE)
  1388. X
  1389. X--- 182,188 -----
  1390. X  see(x,y)
  1391. X  {
  1392. X      int armbonus;
  1393. X!     if((x<0)||(y<0)||(x>=SCREEN_X_SIZE)||(y>=SCREEN_Y_SIZE)) return;
  1394. X      if(((y+yoffset)<MAPY)&&((x+xoffset)<MAPX)) {
  1395. X  
  1396. X          if((magic(sct[x+xoffset][y+yoffset].owner,THE_VOID)==TRUE)
  1397. X***************
  1398. X*** 189,197
  1399. X              ||(dismode==DI_PEOP)||(dismode==DI_FOOD))
  1400. X          &&(country!=sct[x+xoffset][y+yoffset].owner)
  1401. X          &&(country!=0)) {
  1402. X!             standout();
  1403. X!             mvaddch(y,2*x,' ');
  1404. X!             standend();
  1405. X          } else {
  1406. X              switch(dismode){
  1407. X              case DI_FOOD:    /*food */
  1408. X
  1409. X--- 190,196 -----
  1410. X              ||(dismode==DI_PEOP)||(dismode==DI_FOOD))
  1411. X          &&(country!=sct[x+xoffset][y+yoffset].owner)
  1412. X          &&(country!=0)) {
  1413. X!             mvaddch(y,2*x,'?');
  1414. X          } else {
  1415. X              switch(dismode){
  1416. X              case DI_FOOD:    /*food */
  1417. X***************
  1418. X*** 265,271
  1419. X              case DI_PEOP:   /*People*/
  1420. X                  if (sct[x+xoffset][y+yoffset].altitude==WATER)
  1421. X                      mvaddch(y,2*x,WATER);
  1422. X!                 else if (sct[x+xoffset][y+yoffset].people>=1000)
  1423. X                      mvaddch(y,2*x,'+');
  1424. X                  else if (sct[x+xoffset][y+yoffset].people>=450)
  1425. X                      mvaddch(y,2*x,'>');
  1426. X
  1427. X--- 264,270 -----
  1428. X              case DI_PEOP:   /*People*/
  1429. X                  if (sct[x+xoffset][y+yoffset].altitude==WATER)
  1430. X                      mvaddch(y,2*x,WATER);
  1431. X!                 else if (sct[x+xoffset][y+yoffset].people>=4950)
  1432. X                      mvaddch(y,2*x,'+');
  1433. X                  else if (sct[x+xoffset][y+yoffset].people>=950)
  1434. X                      mvaddch(y,2*x,'>');
  1435. X***************
  1436. X*** 267,273
  1437. X                      mvaddch(y,2*x,WATER);
  1438. X                  else if (sct[x+xoffset][y+yoffset].people>=1000)
  1439. X                      mvaddch(y,2*x,'+');
  1440. X!                 else if (sct[x+xoffset][y+yoffset].people>=450)
  1441. X                      mvaddch(y,2*x,'>');
  1442. X                  else if (sct[x+xoffset][y+yoffset].people==0)
  1443. X                      mvaddch(y,2*x,'0');
  1444. X
  1445. X--- 266,272 -----
  1446. X                      mvaddch(y,2*x,WATER);
  1447. X                  else if (sct[x+xoffset][y+yoffset].people>=4950)
  1448. X                      mvaddch(y,2*x,'+');
  1449. X!                 else if (sct[x+xoffset][y+yoffset].people>=950)
  1450. X                      mvaddch(y,2*x,'>');
  1451. X                  else
  1452. X                  mvprintw(y,2*x,"%d",(50+sct[x+xoffset][y+yoffset].people)/100);
  1453. X***************
  1454. X*** 269,276
  1455. X                      mvaddch(y,2*x,'+');
  1456. X                  else if (sct[x+xoffset][y+yoffset].people>=450)
  1457. X                      mvaddch(y,2*x,'>');
  1458. X-                 else if (sct[x+xoffset][y+yoffset].people==0)
  1459. X-                     mvaddch(y,2*x,'0');
  1460. X                  else
  1461. X                      mvprintw(y,2*x,"%d",1+sct[x+xoffset][y+yoffset].people/50);
  1462. X                  break;
  1463. X
  1464. X--- 268,273 -----
  1465. X                      mvaddch(y,2*x,'+');
  1466. X                  else if (sct[x+xoffset][y+yoffset].people>=950)
  1467. X                      mvaddch(y,2*x,'>');
  1468. X                  else
  1469. X                  mvprintw(y,2*x,"%d",(50+sct[x+xoffset][y+yoffset].people)/100);
  1470. X                  break;
  1471. X***************
  1472. X*** 272,278
  1473. X                  else if (sct[x+xoffset][y+yoffset].people==0)
  1474. X                      mvaddch(y,2*x,'0');
  1475. X                  else
  1476. X!                     mvprintw(y,2*x,"%d",1+sct[x+xoffset][y+yoffset].people/50);
  1477. X                  break;
  1478. X              case DI_GOLD:  /*Gold*/
  1479. X                  if (sct[x+xoffset][y+yoffset].altitude==WATER)
  1480. X
  1481. X--- 269,275 -----
  1482. X                  else if (sct[x+xoffset][y+yoffset].people>=950)
  1483. X                      mvaddch(y,2*x,'>');
  1484. X                  else
  1485. X!                 mvprintw(y,2*x,"%d",(50+sct[x+xoffset][y+yoffset].people)/100);
  1486. X                  break;
  1487. X              case DI_GOLD:  /*Gold*/
  1488. X                  if (sct[x+xoffset][y+yoffset].altitude==WATER)
  1489. X***************
  1490. X*** 339,345
  1491. X  void
  1492. X  coffmap()
  1493. X  {
  1494. X!     if((xcurs<1)||(ycurs<1)||(xcurs>=SCREEN_X_SIZE)
  1495. X      ||((ycurs>=SCREEN_Y_SIZE))||((XREAL)>=MAPX)
  1496. X      ||((YREAL)>=MAPY)) offmap();
  1497. X  
  1498. X
  1499. X--- 336,342 -----
  1500. X  void
  1501. X  coffmap()
  1502. X  {
  1503. X!     if((xcurs<0)||(ycurs<0)||(xcurs>=SCREEN_X_SIZE)
  1504. X      ||((ycurs>=SCREEN_Y_SIZE))||((XREAL)>=MAPX)
  1505. X      ||((YREAL)>=MAPY)) offmap();
  1506. X  
  1507. X*** omain.c    Thu Jul 28 09:10:32 1988
  1508. X--- main.c    Thu Jul 28 09:11:10 1988
  1509. X***************
  1510. X*** 208,214
  1511. X          }
  1512. X          execute();
  1513. X  #ifdef TRADE
  1514. X!         uptrade();
  1515. X  #endif TRADE
  1516. X          if(ntn[country].capx>15) {
  1517. X              xcurs=15;
  1518. X
  1519. X--- 208,214 -----
  1520. X          }
  1521. X          execute();
  1522. X  #ifdef TRADE
  1523. X!         checktrade();
  1524. X  #endif TRADE
  1525. X          if(ntn[country].capx>15) {
  1526. X              xcurs=15;
  1527. X***************
  1528. X*** 661,669
  1529. X                  /*print that army to nfound%5*/
  1530. X                  mvaddch((nfound%5)*2,COLS-21,'>');
  1531. X                  if(selector==(nfound%5)*2) standout();
  1532. X-                 /*the mv,for gets the highlighting pretty*/
  1533. X-                 move((nfound%5)*2,COLS-10);
  1534. X-                 for(i=0;i<9;i++) addch(' ');
  1535. X  
  1536. X                  mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
  1537. X                  /*the mv,for gets the highlighting pretty*/
  1538. X
  1539. X--- 661,666 -----
  1540. X                  /*print that army to nfound%5*/
  1541. X                  mvaddch((nfound%5)*2,COLS-21,'>');
  1542. X                  if(selector==(nfound%5)*2) standout();
  1543. X  
  1544. X                  mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
  1545. X  
  1546. X***************
  1547. X*** 666,674
  1548. X                  for(i=0;i<9;i++) addch(' ');
  1549. X  
  1550. X                  mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
  1551. X-                 /*the mv,for gets the highlighting pretty*/
  1552. X-                 move((nfound%5)*2+1,COLS-10);
  1553. X-                 for(i=0;i<9;i++) addch(' ');
  1554. X  
  1555. X                  mvprintw((nfound%5)*2+1,COLS-20," mv:%d st:%s",AMOVE,*(soldname+ASTAT));
  1556. X                  standend();
  1557. X
  1558. X--- 663,668 -----
  1559. X                  if(selector==(nfound%5)*2) standout();
  1560. X  
  1561. X                  mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
  1562. X  
  1563. X                  mvprintw((nfound%5)*2+1,COLS-20," mv:%d st:%s",AMOVE,*(soldname+ASTAT));
  1564. X                  standend();
  1565. X***************
  1566. X*** 688,695
  1567. X                  /*print a navy*/
  1568. X                  mvaddch((nfound%5)*2,COLS-21,'>');
  1569. X                  if(selector==(nfound%5)*2) standout();
  1570. X!                 mvprintw((nfound%5)*2,COLS-20,"nvy %d: war:%d mv:%d",nvynum,NWAR,NMOVE);
  1571. X!                 mvprintw((nfound%5)*2+1,COLS-20," mer %d crew %d",NMER,NCREW);
  1572. X                  standend();
  1573. X              }
  1574. X              nfound++;
  1575. X
  1576. X--- 682,689 -----
  1577. X                  /*print a navy*/
  1578. X                  mvaddch((nfound%5)*2,COLS-21,'>');
  1579. X                  if(selector==(nfound%5)*2) standout();
  1580. X!                 mvprintw((nfound%5)*2,COLS-20,"nvy %d: war:%d mer:%d",nvynum,NWAR,NMER);
  1581. X!                 mvprintw((nfound%5)*2+1,COLS-20," mv:%d crew:%d",NMOVE,NCREW/(NWAR+NMER));
  1582. X                  standend();
  1583. X              }
  1584. X              nfound++;
  1585. X*** opatchlevel.h    Thu Jul 28 09:10:14 1988
  1586. X--- patchlevel.h    Thu Jul 28 09:11:13 1988
  1587. X***************
  1588. X*** 1,1
  1589. X! #define PATCHLEVEL    3
  1590. X
  1591. X--- 1,1 -----
  1592. X! #define PATCHLEVEL    4
  1593. X
  1594. X
  1595. END_OF_FILE
  1596. if test 40959 -ne `wc -c <'patches04'`; then
  1597.     echo shar: \"'patches04'\" unpacked with wrong size!
  1598. fi
  1599. # end of 'patches04'
  1600. fi
  1601. echo shar: End of shell archive.
  1602. exit 0
  1603.